Cytosim  PI
Cytoskeleton Simulator

Detailed Description

A Hand is always part of a larger construct, for example Single or Couple.

Hand is the parent to many class that implement different fiber-related activities. Hand provides binding/unbinding capacity to these derived classes.

Attachment occurs with constant rate attach_rate to any fiber located at distance attach_range or less. If attachment occurs, it happens on the closest point of the fiber, which is either the projection of the point on the fiber, or one of the fiber end.

Detachment increases exponentially with force:

off_rate = unbinding_rate * exp( force.norm() / unbinding_force )

See Parameters of Hand.

Inheritance diagram for Hand:
FiberBinder Node Actor Cutter Mighty Motor Nucleator Rescuer Slider Tracker

Public Member Functions

 Hand (HandProp const *, HandMonitor *h)
 constructor More...
 
virtual ~Hand ()
 destructor
 
virtual bool attachmentAllowed (FiberBinder &site)
 tell if attachment at given site is possible More...
 
virtual void attach (FiberBinder &site)
 attach the hand at the position described by site More...
 
virtual void detach ()
 detach
 
virtual void stepFree (const FiberGrid &, Vector const &pos)
 simulate when the Hand is not attached More...
 
virtual void stepUnloaded ()
 simulate when the Hand is attached but not under load More...
 
virtual void stepLoaded (Vector const &force)
 simulate when the Hand is attached and under load More...
 
virtual void handleOutOfRange (FiberEnd)
 this is called when the attachment point is outside the Fiber's range
 
void attachTo (Fiber *, real ab, FiberEnd from)
 attach to the given position on the given Fiber (calls attach(FiberBinder))
 
void attachToEnd (Fiber *, FiberEnd end)
 attach to the given end on the given Fiber (calls attach(FiberBinder))
 
void read (InputWrapper &, Simul &)
 read
 
void write (OutputWrapper &) const
 write
 
- Public Member Functions inherited from FiberBinder
 FiberBinder ()
 construct as unattached
 
 FiberBinder (Fiber *f, real a)
 construct at the given distance from the origin
 
void relocate (Fiber *f)
 move to a different fiber, at same abscissa
 
void relocate (Fiber *f, real a)
 move to a different fiber, at given position
 
void moveToEnd (FiberEnd end)
 move to the specified FiberEnd (CENTER is also a valid argument)
 
void moveTo (real abs)
 move along the Fiber to specified abscissa, or detach
 
void moveBy (real dabs)
 move along the Fiber by the abscissa offset dabs, or detach
 
bool attached () const
 true if attached
 
Fiberfiber () const
 Fiber to which this is attached, or zero if not attached.
 
Vector pos () const
 position in space
 
Vector dir () const
 direction of Fiber obtained by normalization
 
Vector dirFiber () const
 the direction of the Fiber at the point of attachment
 
real abscissa () const
 the abscissa, from the origin of the Fiber
 
real abscissaFrom (FiberEnd from) const
 abscissa, counted from the specified FiberEnd (in reversed direction for the PLUS_END)
 
FiberEnd nearestEnd () const
 nearest end to the point specified by the abscissa from the origin
 
bool withinP () const
 true if abscissa is below abscissaP
 
bool withinM () const
 true if abscissa is above abscissaM
 
bool within () const
 true if abscissa is within the fiber boundaries
 
const PointInterpolatedinterpolation () const
 the interpolation
 
void updateBinder ()
 set a valid PointInterpolated
 
void checkFiberRange ()
 check the abscissa against the edges of the fiber, calling handleOutOfRange() if necessary.
 
FiberBindernext () const
 a static_cast<> of Node::next()
 
FiberBinderprev () const
 a static_cast<> of Node::prev()
 
void checkAbscissa () const
 check that fbAbs is within Fiber::abscissaM() and Fiber::abscissaP()
 
int bad () const
 check validity of the interpolation (debuging purposes)
 
- Public Member Functions inherited from Node
 Node ()
 constructor set as unlinked
 
virtual ~Node ()
 destructor More...
 
bool linked () const
 true if Node is linked
 
Nodenext () const
 the next Node in the list, or zero if this is last
 
Nodeprev () const
 the previous Node in the list, or zero if this is first
 
NodeListlist () const
 the list where the object is linked, or zero
 
ObjectSetobjset () const
 return associated ObjectSet
 

Public Attributes

HandProp const * prop
 Property.
 

Protected Member Functions

bool testDetachment ()
 test for detachment with rate prop->unbinding_rate More...
 
bool testKramersDetachment (real force)
 test for detachment with Kramers theory More...
 

Protected Attributes

HandMonitorhaMonitor
 the monitor associated with this Hand
 
real nextAttach
 Gillespie normalized time for attachment.
 
real nextDetach
 Gillespie normalized time for detachment.
 
- Protected Attributes inherited from FiberBinder
FiberfbFiber
 the Fiber on which it is attached, or 0 if not attached
 
real fbAbs
 the abscissa from the Fiber origin
 
- Protected Attributes inherited from Node
NodenNext
 the next Node in the list
 
NodenPrev
 the previous Node in the list
 

Constructor & Destructor Documentation

Hand ( HandProp const *  p,
HandMonitor h 
)

To create a new Hand, you need to have a HandProp. HandProp is parent to several classes, exactly fiMirroring the hierarchy of Hands.

The correct derived class can be created by its associated HandProp:

HandProp * hp = HandProp::newProperty(name, opt);
Hand * h = hp->newHand(this);

Member Function Documentation

void attach ( FiberBinder fb)
virtual

This also sets the Gillespie detachment time nextDetach

Reimplemented from FiberBinder.

bool attachmentAllowed ( FiberBinder fb)
virtual

Tests if attachment at site fb is possible:

  • site is located within the MINUS_END and PLUS_END
  • binding_key are bitwise compatible: prop->binding_key & fb.fiber()->prop->binding_key
  • HandMonitor::allowAttachment() returns true

Reimplemented in Tracker.

void stepFree ( const FiberGrid grid,
Vector const &  pos 
)
virtual

Test for attachment to nearby Fibers, using the Gillespie time nextAttach

Reimplemented in Nucleator.

void stepLoaded ( Vector const &  force)
virtual

Test for force-induced detachment following Kramers' law, vith basal rate HandProp::unbinding_rate, and characteristic force HandProp::unbinding_force

Reimplemented in Motor, Nucleator, Rescuer, Tracker, Slider, Cutter, Mighty, and Actor.

void stepUnloaded ( )
virtual

Test for spontaneous detachment at rate HandProp::unbinding_rate,

Reimplemented in Motor, Nucleator, Rescuer, Tracker, Slider, Cutter, Mighty, and Actor.

bool testDetachment ( )
protected

Test for spontaneous detachment using Gillespie approach.

Returns
true if the test has passed, and detach() was called.

see Stochastic Events

bool testKramersDetachment ( real  force)
protected

Test for spontaneous detachment using Gillespie approach.

Returns
true if the test has passed, and detach() was called.

see Stochastic Events